/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.commons.io.filefilter;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestSuite;
import junit.textui.TestRunner;
public class AndFileFilterTestCase extends ConditionalFileFilterAbstractTestCase {
private static final String DEFAULT_WORKING_PATH = "./AndFileFilterTestCase/";
private static final String WORKING_PATH_NAME_PROPERTY_KEY = AndFileFilterTestCase.class.getName() + ".workingDirectory";
public static void main(final String[] args) {
TestRunner.run(suite());
}
public static TestSuite suite() {
return new TestSuite(AndFileFilterTestCase.class);
}
private List testFilters;
private List testTrueResults;
private List testFalseResults;
private List testFileResults;
private List testFilenameResults;
public AndFileFilterTestCase(final String name) {
super(name);
}
public void setUp() throws Exception {
super.setUp();
this.setUpTestFilters();
}
protected IOFileFilter buildFilterUsingAdd(final List filters) {
AndFileFilter filter = new AndFileFilter();
for(int i = 0; i < filters.size(); i++) {
filter.addFileFilter((IOFileFilter) filters.get(i));
}
return filter;
}
protected IOFileFilter buildFilterUsingConstructor(final List filters) {
return new AndFileFilter(filters);
}
protected ConditionalFileFilter getConditionalFileFilter() {
return new AndFileFilter();
}
protected String getDefaultWorkingPath() {
return DEFAULT_WORKING_PATH;
}
protected List getFalseResults() {
return this.testFalseResults;
}
protected List getFileResults() {
return this.testFileResults;
}
protected List getFilenameResults() {
return this.testFilenameResults;
}
protected List getTestFilters() {
return this.testFilters;
}
protected List getTrueResults() {
return this.testTrueResults;
}
protected String getWorkingPathNamePropertyKey() {
return WORKING_PATH_NAME_PROPERTY_KEY;
}
private void setUpTestFilters() {
// filters
//tests
this.testFilters = new ArrayList();
this.testTrueResults = new ArrayList();
this.testFalseResults = new ArrayList();
this.testFileResults = new ArrayList();
this.testFilenameResults = new ArrayList();
// test 0 - add empty elements
{
testFilters.add(0, null);
testTrueResults.add(0, null);
testFalseResults.add(0, null);
testFileResults.add(0, null);
testFilenameResults.add(0, null);
}
// test 1 - Test conditional and with all filters returning true
{
// test 1 filters
List filters = new ArrayList();
filters.add(trueFilters[1]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
// test 1 true results
boolean[] trueResults = new boolean[] {true, true, true};
// test 1 false results
boolean[] falseResults = new boolean[] {false, false, false};
testFilters.add(1, filters);
testTrueResults.add(1, trueResults);
testFalseResults.add(1, falseResults);
testFileResults.add(1, Boolean.TRUE);
testFilenameResults.add(1, Boolean.TRUE);
}
// test 2 - Test conditional and with first filter returning false
{
// test 2 filters
List filters = new ArrayList();
filters.add(falseFilters[1]);
filters.add(trueFilters[1]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
filters.add(falseFilters[2]);
filters.add(falseFilters[3]);
// test 2 true results
boolean[] trueResults = new boolean[] {false, false, false};
// test 2 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(2, filters);
testTrueResults.add(2, trueResults);
testFalseResults.add(2, falseResults);
testFileResults.add(2, Boolean.FALSE);
testFilenameResults.add(2, Boolean.FALSE);
}
// test 3 - Test conditional and with second filter returning false
{
// test 3 filters
List filters = new ArrayList();
filters.add(trueFilters[1]);
filters.add(falseFilters[1]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
filters.add(falseFilters[2]);
filters.add(falseFilters[3]);
// test 3 true results
boolean[] trueResults = new boolean[] {true, false, false};
// test 3 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(3, filters);
testTrueResults.add(3, trueResults);
testFalseResults.add(3, falseResults);
testFileResults.add(3, Boolean.FALSE);
testFilenameResults.add(3, Boolean.FALSE);
}
// test 4 - Test conditional and with third filter returning false
{
// test 4 filters
List filters = new ArrayList();
filters.add(trueFilters[1]);
filters.add(trueFilters[2]);
filters.add(falseFilters[1]);
filters.add(trueFilters[3]);
filters.add(falseFilters[2]);
filters.add(falseFilters[3]);
// test 4 true results
boolean[] trueResults = new boolean[] {true, true, false};
// test 4 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(4, filters);
testTrueResults.add(4, trueResults);
testFalseResults.add(4, falseResults);
testFileResults.add(4, Boolean.FALSE);
testFilenameResults.add(4, Boolean.FALSE);
}
// test 5 - Test conditional and with first and third filters returning false
{
// test 5 filters
List filters = new ArrayList();
filters.add(falseFilters[1]);
filters.add(trueFilters[1]);
filters.add(falseFilters[2]);
filters.add(falseFilters[3]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
// test 5 true results
boolean[] trueResults = new boolean[] {false, false, false};
// test 5 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(5, filters);
testTrueResults.add(5, trueResults);
testFalseResults.add(5, falseResults);
testFileResults.add(5, Boolean.FALSE);
testFilenameResults.add(5, Boolean.FALSE);
}
// test 6 - Test conditional and with second and third filters returning false
{
List filters = new ArrayList();
filters.add(trueFilters[1]);
filters.add(falseFilters[1]);
filters.add(falseFilters[2]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
filters.add(falseFilters[3]);
// test 6 true results
boolean[] trueResults = new boolean[] {true, false, false};
// test 6 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(6, filters);
testTrueResults.add(6, trueResults);
testFalseResults.add(6, falseResults);
testFileResults.add(6, Boolean.FALSE);
testFilenameResults.add(6, Boolean.FALSE);
}
// test 7 - Test conditional and with first and second filters returning false
{
List filters = new ArrayList();
filters.add(falseFilters[1]);
filters.add(falseFilters[2]);
filters.add(trueFilters[3]);
filters.add(falseFilters[3]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
// test 7 true results
boolean[] trueResults = new boolean[] {false, false, false};
// test 7 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(7, filters);
testTrueResults.add(7, trueResults);
testFalseResults.add(7, falseResults);
testFileResults.add(7, Boolean.FALSE);
testFilenameResults.add(7, Boolean.FALSE);
}
// test 8 - Test conditional and with fourth filters returning false
{
List filters = new ArrayList();
filters.add(trueFilters[1]);
filters.add(trueFilters[2]);
filters.add(trueFilters[3]);
filters.add(falseFilters[1]);
// test 8 true results
boolean[] trueResults = new boolean[] {true, true, true};
// test 8 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(8, filters);
testTrueResults.add(8, trueResults);
testFalseResults.add(8, falseResults);
testFileResults.add(8, Boolean.FALSE);
testFilenameResults.add(8, Boolean.FALSE);
}
// test 9 - Test conditional and with all filters returning false
{
List filters = new ArrayList();
filters.add(falseFilters[1]);
filters.add(falseFilters[2]);
filters.add(falseFilters[3]);
// test 9 true results
boolean[] trueResults = new boolean[] {false, false, false};
// test 9 false results
boolean[] falseResults = new boolean[] {true, false, false};
testFilters.add(9, filters);
testTrueResults.add(9, trueResults);
testFalseResults.add(9, falseResults);
testFileResults.add(9, Boolean.FALSE);
testFilenameResults.add(9, Boolean.FALSE);
}
}
}